Cooperatively combining program verifiers: foundations and tool support
نویسنده
چکیده
Computer science literature abounds with descriptions of program verifiers, systems which analyse a software program and attempt to prove automatically that the program satisfies behavioural specifications. Techniques used include predicate abstraction, three-valued heaps graphs and classes of polyhedra. Yet while these systems have had some encouraging successes, each deals only with particular patterns of program behaviour: e.g. predicate abstraction can infer arithmetical relationships but does not capture the “shape” of linked data structures; for three-valued shape graphs the reverse is true. Thus typical programs, in which different patterns of behaviour are mixed up together, still cannot be verified automatically. This thesis explores the question: “By combining several program verifiers, and making them cooperate, can we produce a verification system that solves a broader range of verification problems than its components do?”. Specifically, our approach is to allow the verifiers to exchange information about program states, expressed as formulae of a single common logic, so that each can benefit from the others’ findings. We design a mechanism which enables the verifiers to cooperate. Our setup comprises several verifiers, cleanly separated as analysis modules implementing a common interface, and a central “broker” which oversees the verification process, propagating formulae between the analysis modules. We formalise this approach for programs of a core imperative heap-manipulating language with recursion, annotated with correctness assertions. We give an interprocedural verification algorithm for the broker and soundness conditions for analysis modules, and prove that these ensure the algorithm is sound (though perforce incomplete). We report on the implementation of our new method in an experimental system hector, which includes the broker and analysis modules for a range of techniques, including predicate abstraction and three-valued shape analysis. By means of a verification case study, we demonstrate some of the advantages of our approach.
منابع مشابه
Applying FSQ Engineering Foundations to Automated Calculation of Program Behavior
...............................................................................................................v 1 The Problem of Understanding Program Behavior....................................1 2 Background: Function-Theoretic Foundations of FSQ Flow Structures..3 3 Function-Theoretic Calculation of Program Behavior ...............................6 4 The Architecture of an Abstraction Engin...
متن کاملOn Limitations of Universal Simulation: Constant-Round Public-Coin Zero-Knowledge Proofs Imply Understanding Programs
In this paper we consider the problem of whether there exist non-trivial constant-round public-coin zero-knowledge (ZK) proofs. We focus on the type of ZK proofs that admit a universal simulator (which handles all malicious verifiers), and show a connection between the existence of such proof systems and a seemingly unrelated “program understanding” problem: for a natural class of constant-roun...
متن کاملOn the Implausibility of Constant-Round Public-Coin Zero-Knowledge Proofs
We consider the problem of whether there exist non-trivial constant-round public-coin zero-knowledge (ZK) proofs. To date, in spite of high interest in the above, there is no definite answer to the question. We focus on the type of ZK proofs that admit a universal simulator (which handles all malicious verifiers), and show a connection between the existence of such proof systems and a seemingly...
متن کاملSome Ideas for Program Verifier Tactics
A program verifier is a tool that can be used to verify that a “contract” for a program holds – i.e. given a precondition the program guarantees that a given postcondition holds – by only working at the level of the annotated program. An alternative approach is to use an interactive theorem prover, which enables users to encode common proof patterns as special programs called “tactics”. This of...
متن کاملThe Belgian Electronic Identity Card: a Verification Case Study
In the field of annotation-based source code level program verification for Java-like languages, separation-logic based verifiers offer a promising alternative to classic JML based verifiers such as ESC/Java2, the Mobius tool or Spec#. Researchers have demonstrated the advantages of separation logic based verification by showing that it is feasible to verify very challenging (though very small)...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2008